In packet-switched communications logical data flows are transmitted as a stream of addressed packets. The packets may be forwarded by network nodes in a first-come first-serve fashion, or forwarded according to some scheduling discipline for fair queuing or differentiated and/or guaranteed quality of service. Examples of packet switching systems comprise the Internet, local area networks, and some advanced cellular communications networks.
The set of communications protocols commonly used for the Internet and other similar networks is called as the Internet Protocol (IP) suite. The Internet Protocol (IP) handles lower-level transmissions from computer to computer as a message makes its way across the Internet. On top of IP there are higher level protocols that offer different types of reliability measures for the transmissions.
The Transmission Control Protocol (TCP) operates over IP and provides in endpoints a variety of procedures to facilitate reliable, ordered delivery of a stream of data between these endpoints. As another option, the User Datagram Protocol (UDP) assumes that error checking and correction is either not necessary or performed by the application, avoiding the overhead of such processing at the network interface level. Time-sensitive applications often use UDP because dropping packets is preferred over using delayed packets.
TCP and UDP are used here as examples of reliable and unreliable transmission protocols of one particular protocol suite. More generally, unreliable transmission refers here to any protocol of any protocol suite where the transmission mechanism does not control that data packets are received successively from the transmission path. Accordingly, if a packet is dropped or delayed in transmission, the upper layer may have to perform its operations without it, sometimes even without knowing that one packet is missing from the sequence.
Recently, the low overhead and time-sensitiveness of unreliable transmission mechanisms has been considered important and more and more applications are designed to apply unreliable data transmission mechanisms. Typically the applications can deal with small and temporary degradations in the transmission path, but if the number of dropped packets gets too high, the quality of service offered by the application naturally deteriorates.
Such deteriorations are conventionally avoided by subscribing for the applications network service levels with generous safety margins to absorb and/or compensate any dynamic deviations in the network. However, most of the time such safety margins consume costly resources unnecessarily. Due to severe commercial competition both service providers and network operators nowadays seek actively mechanisms that improve possibilities to apply unreliable data transmission mechanisms between communicating hosts but at the same time enable optimizing the service level requirements posed to the network connecting the hosts.